package com.ruoyi.merchant.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 订单对象 orders
 */
@Data
@EqualsAndHashCode(callSuper = false)
@JsonInclude(JsonInclude.Include.NON_NULL)
public class Order {

    /** 订单ID */
    private Long orderId;

    /** 订单号 */
    private String orderNo;

    /** 用户ID */
    private Long customerId;

    /** 商家ID */
    private Long merchantId;

    /** 区域ID */
    private Long regionId;

    /** 取餐码 */
    private String pickupCode;

    /** 订单状态 */
    private Integer status;

    /** 商品总额 */
    private BigDecimal totalAmount;

    /** 优惠金额 */
    private BigDecimal discountAmount;

    /** 区域补贴 */
    private BigDecimal regionSubsidy;

    /** 实付金额 */
    private BigDecimal finalAmount;

    /** 支付方式 */
    private Integer paymentMethod;

    /** 支付状态 */
    private Integer paymentStatus;

    /** 地址快照 */
    private String addressSnapshot;

    /** 备注 */
    private String remark;

    /** 预计完成分钟 */
    private Integer estimatedReadyMin;

    /** 餐具数量 */
    private Integer tablewareCount;

    /** 支付时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date paidAt;

    /** 完成时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date finishedAt;

    /** 取消时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date canceledAt;

    /** 创建时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createdAt;

    /** 更新时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updatedAt;

    /** 删除时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date deletedAt;

    /** 预留字段1 */
    private String externField1;

    /** 预留字段2 */
    private String externField2;

    /** 订单明细列表 */
    private List<OrderItem> items;

    // ========== 用户信息（非数据库字段）==========

    /** 用户昵称 */
    private String customerNickname;

    /** 用户手机号 */
    private String customerPhone;

    /** 用户区域ID */
    private Long customerRegionId;
}
